1 package edu.jiangxin.apktoolbox.help.settings; 2 3 import edu.jiangxin.apktoolbox.swing.extend.EasyChildTabbedPanel; 4 import edu.jiangxin.apktoolbox.utils.Constants; 5 import org.apache.commons.lang3.StringUtils; 6 import org.apache.commons.lang3.Strings; 7 8 import javax.swing.*; 9 import java.awt.*; 10 import java.awt.event.ActionEvent; 11 import java.awt.event.ActionListener; 12 import java.io.Serial; 13 import java.util.Locale; 14 15 public class LocalePanel extends EasyChildTabbedPanel { 16 @Serial 17 private static final long serialVersionUID = 1L; 18 19 private JPanel optionPanel; 20 21 private JComboBox<String> typeComboBox; 22 23 private JPanel operationPanel; 24 25 private static final String[] SUPPORTED_LANGUAGES = {Locale.CHINESE.getLanguage(), Locale.ENGLISH.getLanguage()}; 26 27 @Override 28 public void createUI() { 29 BoxLayout boxLayout = new BoxLayout(this, BoxLayout.Y_AXIS); 30 setLayout(boxLayout); 31 32 createOptionPanel(); 33 add(optionPanel); 34 35 add(Box.createVerticalStrut(Constants.DEFAULT_Y_BORDER)); 36 37 createOperationPanel(); 38 add(operationPanel); 39 40 add(Box.createVerticalStrut(15 * Constants.DEFAULT_Y_BORDER)); 41 } 42 43 private void createOptionPanel() { 44 optionPanel = new JPanel(); 45 optionPanel.setLayout(new BoxLayout(optionPanel, BoxLayout.X_AXIS)); 46 47 JLabel typeLabel = new JLabel("Locale:"); 48 typeComboBox = new JComboBox<>(); 49 typeComboBox.setMaximumSize(new Dimension(Constants.DEFAULT_COMBOBOX_WIDTH, Constants.DEFAULT_COMBOBOX_HEIGHT)); 50 51 String currentLocaleLanguage = conf.getString("locale.language"); 52 if (StringUtils.isEmpty(currentLocaleLanguage)) { 53 currentLocaleLanguage = Locale.ENGLISH.getLanguage(); 54 conf.setProperty("locale.language", currentLocaleLanguage); 55 } 56 57 for (String language : SUPPORTED_LANGUAGES) { 58 typeComboBox.addItem(language); 59 if (Strings.CS.equals(currentLocaleLanguage, language)) { 60 typeComboBox.setSelectedItem(language); 61 } 62 } 63 64 optionPanel.add(typeLabel); 65 optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER)); 66 optionPanel.add(typeComboBox); 67 } 68 69 private void createOperationPanel() { 70 operationPanel = new JPanel(); 71 operationPanel.setLayout(new BoxLayout(operationPanel, BoxLayout.X_AXIS)); 72 73 JButton applyButton = new JButton("Apply"); 74 applyButton.addActionListener(new ApplyButtonActionListener()); 75 76 operationPanel.add(applyButton); 77 } 78 79 private final class ApplyButtonActionListener implements ActionListener { 80 @Override 81 public void actionPerformed(ActionEvent e) { 82 String language = (String)typeComboBox.getSelectedItem(); 83 if (StringUtils.isNotEmpty(language)) { 84 conf.setProperty("locale.language", language); 85 JOptionPane.showMessageDialog(LocalePanel.this, "Setting locale successfully, restart the program please"); 86 } 87 } 88 } 89 }